package Prototype;

public class Main {
    public static void main(String[] args) throws Exception {
        Email e1 = new Email();
        System.out.println("原邮件的Email:"+e1);

        // 浅克隆
        Email shallowCopy = (Email) e1.clone();

        // 深克隆
        Email deepCopy = (Email) e1.deepClone();
        //对象本身 一个是属性
        //浅克隆：复制对象本身，但内部的引用属性还是指向同一个对象。
        //深克隆：对象和它里面的引用属性都复制一份，完全独立。
        System.out.println("===== 浅克隆测试 =====");
        System.out.println("e1 == shallowCopy ? " + (e1 == shallowCopy)); //false 创建了一个新的对象
        System.out.println("e1.attachment == shallowCopy.attachment ? "
                + (e1.getAttachment() == shallowCopy.getAttachment()));//true 两个邮件对象里面的附件引用的是同一个对象。

        System.out.println("\n===== 深克隆测试 =====");
        System.out.println("e1 == deepCopy ? " + (e1 == deepCopy));
        System.out.println("e1.attachment == deepCopy.attachment ? "
                + (e1.getAttachment() == deepCopy.getAttachment()));
    }
}
